﻿using SqlSugar;
using System;
using System.Collections.Generic;
using System.Text; 

namespace SHKF.B2C.MeiTuanPeiSong.Model.Request
{
    /// <summary>
    /// 创建订单（门店方式）参数
    /// </summary>
    public class CreateOrderByShopRequest : AbstractRequest
    {
        public CreateOrderByShopRequest()
        {
            this.coordinate_type = 0;
        }

        private int _status = 0;
        /// <summary>
        /// 状态代码: 0：待调度  20：已接单 30：已取货 50：已送达 99：已取消
        /// </summary>
        public int status
        {
            get { return _status; }
            set { _status = value; }
        }


        /// <summary>
        ///  即配送活动标识，由外部系统生成，不同order_id应对应 不同的delivery_id，若因美团系统故障导致发单接口失败，可利用相同的delivery_id重新发单，
        /// 系统视为同一次 配送活动，若更换delivery_id，则系统视为两次独立配送 活动。
        /// </summary>
        public long delivery_id { get; set; }

        private string _order_id = "";
        /// <summary>
        /// 订单id，即该订单在合作方系统中的id，最长不超过32个字符
        /// 注：目前若某一订单正在配送中（状态不为取消），再次发送同一订单 （order_id相同）将返回同一mt_peisong_id
        /// </summary>
        public string order_id
        {
            get { return _order_id; }
            set { _order_id = value; }
        }

        private string _outer_order_source_desc;
        /// <summary>
        /// 订单来源
        /// </summary>
        public string outer_order_source_desc
        {
            get { return _outer_order_source_desc; }
            set { _outer_order_source_desc = value; }
        }

        /// <summary>
        /// 取货门店id，即合作方向美团提供的门店id
        /// </summary>
        public string shop_id { get; set; }

        private int _delivery_service_code;
        /**
         * 配送服务代码，详情见合同
         * 光速达:4001
         * 快速达:4011
         * 及时达:4012
         * 集中送:4013
         * 当天达:4021
         */
        public int delivery_service_code
        {
            get { return _delivery_service_code; }
            set { _delivery_service_code = value; }
        }

        /// <summary>
        /// 收件人名称，最长不超过256个字符
        /// </summary>
        public string receiver_name { get; set; }

        /// <summary>
        /// 收件人地址，最长不超过512个字符
        /// </summary>
        public string receiver_address { get; set; }

        /// <summary>
        /// 收件人电话，最长不超过64个字符
        /// </summary>
        public string receiver_phone { get; set; }

        /// <summary>
        /// 收件人经度
        /// </summary>
        public int receiver_lng { get; set; }

        /// <summary>
        /// 收件人纬度
        /// </summary>
        public int receiver_lat { get; set; }

        /// <summary>
        /// 坐标类型，0：火星坐标（高德，腾讯地图均采用火星坐标） 1：百度坐标 （默认值为0）
        /// </summary>
        public int coordinate_type { get; set; }

        /// <summary>
        /// 货物价格，单位为元，精确到小数点后两位
        /// </summary>
        public double goods_value { get; set; }

        /// <summary>
        /// 货物高度，单位为cm，精确到小数点后两位
        /// </summary>
        public double goods_height { get; set; }

        /// <summary>
        /// 货物宽度，单位为cm，精确到小数点后两位
        /// </summary>
        public double goods_width { get; set; }

        /// <summary>
        /// 货物长度，单位为cm，
        /// </summary>
        public double goods_length { get; set; }

        /// <summary>
        /// 货物重量，单位为kg，精确到小数点后两位
        /// </summary>
        public double goods_weight { get; set; }

        [SugarColumn(IsIgnore = true)]
        public goods_detail goods_detail { get; set; }

        /// <summary>
        /// 货物取货信息，用于骑手到店取货，最长不超过100个字符
        /// </summary>
        public string goods_pickup_info { get; set; }

        /// <summary>
        /// 货物交付信息，最长不超过100个字符
        /// </summary>
        public string goods_delivery_info { get; set; }

        /// <summary>
        /// 期望取货时间，时区为GMT+8，当前距离 Epoch（1970年1月1日) 以秒计算的时间，即unix-timestamp。
        /// </summary>
        public long expected_pickup_time { get; set; }

        /// <summary>
        /// 期望送达时间
        /// </summary>
        public long expected_delivery_time { get; set; }

        /// <summary>
        /// 门店订单流水号，建议提供，方便骑手门店取货，最长不超过32个字符
        /// </summary>
        public string poi_seq { get; set; }

        /// <summary>
        /// 备注，最长不超过200个字符。
        /// </summary>
        public string note { get; set; }

        private double _cash_on_delivery;
        /// <summary>
        /// 骑手应付金额，单位为元，精确到分
        /// </summary>
        public double cash_on_delivery
        {
            get { return _cash_on_delivery; }
            set { _cash_on_delivery = value; }
        }


        private double _cash_on_pickup = 0;
        /// <summary>
        /// 骑手应收金额，单位为元，精确到分
        /// </summary>
        public double cash_on_pickup
        {
            get { return _cash_on_pickup; }
            set { _cash_on_pickup = value; }
        }


        private string _invoice_title;
        /// <summary>
        /// 发票抬头，最长不超过256个字符【预留字段】
        /// </summary>
        public string invoice_title
        {
            get { return _invoice_title; }
            set { _invoice_title = value; }
        }

        private int _order_type = 0;
        /// <summary>
        /// 订单类型，默认为0 
        /// 0: 即时单(尽快送达，限当日订单) 
        /// 1: 预约单 
        /// 跑腿-帮送服务包预约单，会存在骑手提前接单的可能
        /// </summary>
        public int order_type
        {
            get { return _order_type; }
            set { _order_type = value; }
        }

        private int _pay_type_code;
        /// <summary>
        /// 支付方式，0、账期支付，1、余额支付；
        /// </summary>
        public int pay_type_code
        {
            get { return _pay_type_code; }
            set { _pay_type_code = value; }
        }


        private string _delivery_qr_code;
        /// <summary>
        /// 配送码 
        /// </summary>
        public string delivery_qr_code
        {
            get { return _delivery_qr_code; }
            set { _delivery_qr_code = value; }
        }

        /// <summary>
        /// 加小费字段，加小费，精确到元，需要为1或1的倍数，上限20； 非跑腿-帮送服务包不支持
        /// </summary>
        public int tip_amount { get; set; }

        /// <summary>
        /// 收货码开关，默认为0，0=off，1=on，当收件人手机号为隐私号时，不支持收货码； 非跑腿-帮送服务包不支持
        /// </summary>
        public int goods_code_switch { get; set; }

        private string _coupons_id;
        /// <summary>
        /// 优惠券ID；
        /// </summary>
        public string coupons_id
        {
            get { return _coupons_id; }
            set { _coupons_id = value; }
        }

    }
}
